package api

import (
	"gitee.com/tang_q/gin-vue3-admin-api/global"
	_ "gitee.com/tang_q/gin-vue3-admin-api/model"
	_ "gitee.com/tang_q/gin-vue3-admin-api/model/family"
	_ "gitee.com/tang_q/gin-vue3-admin-api/model/product"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"net/http"
)

type BaseApi struct {
	ctx    *gin.Context
	Logger *zap.SugaredLogger
}
type ResponseJson struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
	Data any    `json:"data"`
}

func NewBaseApi() BaseApi {
	return BaseApi{
		Logger: global.Logger,
	}
}

// Success 是一个BaseApi结构体的方法，用于返回成功的HTTP响应
//
// 参数：
// msg string - 成功消息字符串
// data any - 成功返回的数据，可以是任意类型
//
// 返回值：
// 无返回值，该函数会直接发送HTTP响应
func (b *BaseApi) Success(msg string, data any) {
	b.ctx.AbortWithStatusJSON(http.StatusOK, ResponseJson{
		Code: http.StatusOK,
		Msg:  msg,
		Data: data,
	})
}

// Fail 是BaseApi结构体的一个方法，用于发送失败响应
//
// 参数：
//
//	code int：HTTP状态码，表示失败的原因
//	msg string：错误消息字符串，用于描述失败的原因
//	data any：返回的数据，可以为任意类型，通常用于传递额外的失败信息
//
// 返回值：
//
//	无返回值，该函数会直接通过HTTP响应发送失败信息
func (b *BaseApi) Fail(code int, msg string, data any) {
	//失败响应
	b.ctx.AbortWithStatusJSON(code, ResponseJson{
		Code: code,
		Msg:  msg,
		Data: data,
	})
}
